package cn.bugstack.domain.activity.service;

import cn.bugstack.domain.activity.model.entity.*;

/**
 * @author 19872
 * 抽奖活动订单接口
 */
public interface IRaffleActivityAccountQuotaService {

    /**
     * 以sku创建抽奖活动订单，获得参与抽奖资格（可消耗的次数）
     *
     * @param skuRechargeEntity 活动sku实体，通过sku领取活动
     * @return 活动参与记录实体
     */
    UnpaidActivityOrderEntity createOrder(SkuRechargeEntity skuRechargeEntity);

    /**
     * 订单出货 - 积分充值
     * @param deliveryOrderEntity 出货单实体对象
     */
    void updateOrder(DeliveryOrderEntity deliveryOrderEntity);


    /**
     * 查询用户当天的已抽奖次数
     * @param activityId 活动ID
     * @param userId 用户ID
     * @return 用户当天已经抽奖的次数
     */
    Integer queryRaffleActivityAccountDayPartakeCount(Long activityId, String userId);

    /**
     * 查询活动账户实体
     * @param userId 用户ID
     * @param activityId 活动ID
     * @return 活动账户实体
     */
    ActivityAccountEntity queryActivityAccountEntity(String userId, Long activityId);

    /**
     * 查询用户已抽奖次数
     * @param userId 用户ID
     * @param activityId 活动ID
     * @return 用户已经抽奖的次数
     */
    Integer queryRaffleActivityAccountPartakeCount(String userId, Long activityId);
}
